package jishiti.counttxtfile;

/**
 * 执行结果：
 *          父类的静态代码块
 *          子类的静态代码块
 *          子类赋值给父类的静态变量
 *          通过子类引用父类的静态变量，不会导致子类初始化
 *          子类赋值给父类的静态变量
 *          在set方法中修改了父类的静态变量，得到的是修改后的值
 *          子类修改后的父类的静态变量：子类赋值给父类的静态变量
 */
public class FuZi  {
    public static void main(String[] args) {
//        Zi z = new Zi();
        Zi.set();
        Zi.get();
        Fu.get();
    }
}
class Fu{
    static  String str1="父类的静态变量";
    String str2 = "父类的非静态变量";
    static {
        System.out.println("父类的静态代码块");
    }
    {
        System.out.println("父类的非静态代码块");
    }
    public static void get(){
        System.out.println("子类修改后的父类的静态变量:"+str1);
    }
    public Fu(){
        System.out.println("父类的构造方法");
    }
}
class Zi extends  Fu{
    static String str1 = "子类的静态变量";
    String str2 = "子类的非静态变量";
   public static void set(){
       Fu.str1="子类赋值给父类的静态变量";
       System.out.println(Fu.str1);
       System.out.println("通过子类引用父类的静态变量，不会导致子类初始化");
    }
    public static void get(){
        System.out.println(Fu.str1);
        System.out.println("在set方法中修改了父类的静态变量，得到的是修改后的值");
    }
    static {
        System.out.println("子类的静态代码块");
    }
    {
        System.out.println("子类的非静态代码块");
    }
    public Zi(){
        System.out.println("子类的构造方法");
    }
}